(function ($) {
    $.format = (function () {
 
		var parseMonth = function(value){
 
    		switch(value){
    		case "Jan":
    			return "01"; 
        		break;
    		case "Feb":
    			return "02";  
        		break;
    		case "Mar":
    			return "03";  
        		break;	      
    		case "Apr":
    			return "04";  
        		break;	      
    		case "May":
    			return "05";  
        		break;	      
    		case "Jun":
    			return "06";  
        		break;	      
    		case "Jul":
    			return "07";  
        		break;	      
    		case "Aug":
    			return "08";  
        		break;
    		case "Sep":
    			return "09";  
        		break;	 
    		case "Oct":
    			return "10";  
        		break;	 
    		case "Nov":
    			return "11";  
        		break;	 
    		case "Dec":
    			return "12";  
        		break;	         		        		        		        			              		        		        		        		        		
			default:
				return value;
			}  
		};
 
		var parseTime = function(value){
			var retValue = value;
			if(retValue.indexOf(".") != -1){
				retValue =  retValue.substring(0, retValue.indexOf("."));
			}
 
    		var values3 = retValue.split(":");
    		
    		if(values3.length == 3){
	    		hour		= values3[0]; 
	    		minute		= values3[1];
	    		second		= values3[2];
 
				return {
						time: retValue,
						hour: hour,
						minute: minute,
						second: second
				};
    		} else {
				return {
					time: "",
					hour: "",
					minute: "",
					second: ""
			};    			
    		}
		};
        
        return {
            date: function(value, format){
            	//value = new java.util.Date()
        		//2009-12-18 10:54:50.546
            	try{
            		var values = value.split(" ");
            		var year 		= null;
            		var month 		= null;
            		var dayOfMonth 	= null;
            		var time 		= null; //json, time, hour, minute, second
            		
            		switch(values.length){
            		case 6://Wed Jan 13 10:43:41 CET 2010
            			year 		= values[5];            			
	            		month 		= parseMonth(values[1]);
	            		dayOfMonth 	= values[2];
	            		time		= parseTime(values[3]);
            			break;
            		case 2://2009-12-18 10:54:50.546
            			var values2 = values[0].split("-");
            			year 		= values2[0];               			
            			month 		= values2[1];
	            		dayOfMonth 	= values2[2];
	            		time 		= parseTime(values[1]);
            			break;
            		default:
            			return value;
            		}
            		
            		
            		var pattern 	= "";
            		var retValue 	= "";
            		
            		for(i = 0; i < format.length; i++){
            			var currentPattern = format.charAt(i);
            			pattern += currentPattern;
            			switch(pattern){
                		case "dd":
                			retValue += dayOfMonth;
                			pattern   = "";
    	            		break;
                		case "MM":
                			retValue += month;
                			pattern   = "";
    	            		break;	            		
                		case "yyyy":
                			retValue += year;
                			pattern   = "";
    	            		break;
                		case "HH":
                			retValue += time.hour;
                			pattern   = "";
    	            		break;    	            		
                		case "hh":
                			retValue += time.hour;
                			pattern   = "";
    	            		break;
                		case "mm":
                			retValue += time.minute;
                			pattern   = "";
    	            		break;
                		case "ss":
                			retValue += time.second;
                			pattern   = "";
    	            		break;
                		case " ":
                			retValue += currentPattern;
                			pattern   = "";
    	            		break;
                		case "/":
                			retValue += currentPattern;
                			pattern   = "";
    	            		break;    	            	
                		case ":":
                			retValue += currentPattern;
                			pattern   = "";
    	            		break;    	            	    	            		
            			default:
            				if(pattern.length == 2 && pattern.indexOf("y") != 0){
            					retValue += pattern.substring(0, 1);
            					pattern = pattern.substring(1, 2);
            				} else if((pattern.length == 3 && pattern.indexOf("yyy") == -1)){
            					pattern   = "";
            				}
            			}            
                    }
            		return retValue;
            	} catch(e) {
                	return value;
            	}	
        	}
        };
    })();
}(jQuery));